package com.csu.ourpetstore1.service;

import com.csu.ourpetstore1.domain.CartItem;
import com.csu.ourpetstore1.domain.Item;
import com.csu.ourpetstore1.persistence.CartMapper;
import com.csu.ourpetstore1.persistence.ItemMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;
@Service
public class CartService {
    @Autowired
    ItemMapper itemMapper;
    @Autowired
    CartMapper cartMapper;

    public List<CartItem> getCart(String username){
        return cartMapper.get_wholeCart(username);
    }

    public Item remove(String username, String Itemid){
        cartMapper.removeItemById(username,Itemid);
        return itemMapper.getItem(Itemid);
    }

    public void setQuantity(String username,String Itemid,int quantity){
        CartItem cartItem = cartMapper.containsItemId(username,Itemid);
        cartMapper.setQuantityByItemId(username,Itemid,quantity,cartItem.getItem().getListPrice().multiply(new BigDecimal(quantity)));
    }

    public void addItem(String username,Item item,int isStock){
        CartItem cartItem1 = cartMapper.containsItemId(username,item.getItemId());
        if(cartItem1!=null){
            cartMapper.setQuantityByItemId(username,item.getItemId(),cartItem1.getQuantity()+1,cartItem1.getItem().getListPrice().multiply(new BigDecimal(cartItem1.getQuantity()+1)));
        }
        else {
            CartItem cartItem = new CartItem();
            cartItem.setUsername(username);
            cartItem.setItem(new Item());
            cartItem.getItem().setItemId(item.getItemId());
            cartItem.setQuantity(1);
            cartItem.setTotal(item.getListPrice());
            cartMapper.addItem(cartItem,isStock);
        }
    }

    public BigDecimal gettotal(String username){
        return cartMapper.getSubTotal(username);
    }
}
